package cn.hr.base;

import java.io.Serializable;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

/**
 * DAO父接口
 *
 * @author MO
 */
public interface BaseMapper<T> {
    /**
     * 新增
     *
     * @param t
     * @return
     * @throws SQLException
     */
    int insert(T t) throws SQLException;

    /**
     * 根据id修改
     *
     * @param t
     * @return
     * @throws SQLException
     */
    int update(T t) throws SQLException;

    /**
     * 根据id删除
     *
     * @param id
     * @return
     * @throws SQLException
     */
    int delete(@Param("id") Integer id) throws SQLException;

    /**
     * 根据id获取对象
     *
     * @param id
     * @return
     * @throws SQLException
     */
    T get(@Param("id") Integer id) throws SQLException;

    /**
     * 根据查询条件分页查询
     *
     * @param t 查询条件
     * @return
     * @throws SQLException
     */
    List<Map> findListByCondition(Map m) throws SQLException;

    /**
     * 根据查询条件查询总记录数
     *
     * @param t 查询条件
     * @return
     * @throws SQLException
     */
    Long findCountByCondition(Map m) throws SQLException;

    /**
     * 查询id列的最大值,用于生产编码
     *
     * @return
     * @throws Exception
     */
    Integer findMaxId() throws Exception;
}
